﻿using System;
using System.Collections.Generic;

namespace Wisdom.Core
{
    /// <summary>
    /// Defines a interface which is used to hold the list of the task that would be executed when for each request.
    /// </summary>
    public interface IPerRequestTasksRegistry : IFluentSyntax, ITasksRegistry
    {
        /// <summary>
        /// Includes this instance.
        /// </summary>
        /// <typeparam name="TTask">The type of the task.</typeparam>
        /// <returns></returns>
        IPerRequestTasksRegistry Include<TTask>() where TTask : PerRequestTask;

        /// <summary>
        /// Includes the specified configure.
        /// </summary>
        /// <typeparam name="TTask">The type of the task.</typeparam>
        /// <param name="configure">The configure.</param>
        /// <returns></returns>
        IPerRequestTasksRegistry Include<TTask>(Action<TTask> configure) where TTask : PerRequestTask;
    }
}